package com.xframework.security.model;

import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.xframework.annotation.MappingColumn;
import com.xframework.annotation.MappingTable;
import com.xframework.model.BaseModel;

/**
 * 账户.
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
@MappingTable(tableName = "SECURITY_ACCOUNT")
public class Account extends BaseModel {
	/**
	 * ID.
	 */
	@MappingColumn(columnName = "ACCOUNT_ID", columnPk = true, columnLength = 32)
	private String accountId;
	/**
	 * 密码.
	 */
	@MappingColumn(columnName = "ACCOUNT_PASSWORD")
	private String accountPassword;
	/**
	 * 用户名.
	 */
	@MappingColumn(columnName = "ACCOUNT_NAME")
	private String accountName;
	@MappingColumn(columnName = "ACCOUNT_NICK_NAME")
	private String accountNickName;
	@MappingColumn(columnName = "ACCOUNT_MOBILE")
	private String accountMobile;
	@MappingColumn(columnName = "ACCOUNT_EMAIL")
	private String accountEmail;
	/**
	 * 描述.
	 */
	@MappingColumn(columnName = "ACCOUNT_REMARK")
	private String accountRemark;
	/**
	 * 状态 0 正常 1 待定 2 停用.
	 */
	@MappingColumn(columnName = "ACCOUNT_STATE")
	private Integer accountState;
	/**
	 * 最后登陆时间.
	 */
	@MappingColumn(columnName = "ACCOUNT_LOGIN_TIME")
	private String accountLoginTime;
	/**
	 * 创建时间.
	 */
	@MappingColumn(columnName = "ACCOUNT_CREATE_TIME")
	private String accountCreateTime;
	/**
	 * 修改时间.
	 */
	@MappingColumn(columnName = "ACCOUNT_MODIFY_TIME")
	private String accountModifyTime;
	/**
	 * 用户扩展属性map
	 */
	@MappingTable(tableName = "SECURITY_ACCOUNT_PROPERTY", modelClass = Property.class)
	private Map<String, String> accountPropertyMap;

	private List<Role> roleList;

	public Account() {
	}

	public String getAccountId() {
		return accountId;
	}

	public void setAccountId(String accountId) {
		this.accountId = accountId;
	}

	public String getAccountPassword() {
		return accountPassword;
	}

	public void setAccountPassword(String accountPassword) {
		this.accountPassword = accountPassword;
	}

	public String getAccountName() {
		return accountName;
	}

	public void setAccountName(String accountName) {
		this.accountName = accountName;
	}

	public String getAccountNickName() {
		return accountNickName;
	}

	public void setAccountNickName(String accountNickName) {
		this.accountNickName = accountNickName;
	}

	public String getAccountMobile() {
		return accountMobile;
	}

	public void setAccountMobile(String accountMobile) {
		this.accountMobile = accountMobile;
	}

	public String getAccountEmail() {
		return accountEmail;
	}

	public void setAccountEmail(String accountEmail) {
		this.accountEmail = accountEmail;
	}

	public String getAccountRemark() {
		return accountRemark;
	}

	public void setAccountRemark(String accountRemark) {
		this.accountRemark = accountRemark;
	}

	public Integer getAccountState() {
		return accountState;
	}

	public void setAccountState(Integer accountState) {
		this.accountState = accountState;
	}

	public String getAccountLoginTime() {
		return accountLoginTime;
	}

	public void setAccountLoginTime(String accountLoginTime) {
		this.accountLoginTime = accountLoginTime;
	}

	public String getAccountCreateTime() {
		return accountCreateTime;
	}

	public void setAccountCreateTime(String accountCreateTime) {
		this.accountCreateTime = accountCreateTime;
	}

	public String getAccountModifyTime() {
		return accountModifyTime;
	}

	public void setAccountModifyTime(String accountModifyTime) {
		this.accountModifyTime = accountModifyTime;
	}

	public Map<String, String> getAccountPropertyMap() {
		return accountPropertyMap;
	}

	public void setAccountPropertyMap(Map<String, String> accountPropertyMap) {
		this.accountPropertyMap = accountPropertyMap;
	}

	public List<Role> getRoleList() {
		return roleList;
	}

	public void setRoleList(List<Role> roleList) {
		this.roleList = roleList;
	}
}
